/*
  flamingo - 2D Game Engine
  Copyright (C) 2009 Bradley Zeis

  This program is free software: you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
  the Free Software Foundation, either version 3 of the License, or
  (at your option) any later version.

  This program is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  GNU General Public License for more details.

  You should have received a copy of the GNU General Public License
  along with this program.  If not, see <http://www.gnu.org/licenses/>.

  Bradley Zeis
  flamingoengine@gmail.com
*/

Color *uNewColor(double r, double g, double b, double a);
void Color_SetBounds(Color *self);

/* -------- FLCOLOR METHODS -------- */

/* -------- COLOR METHODS -------- */
/* Initialization */
void Color_dealloc(Color *self);
PyObject *Color_new(PyTypeObject *type, PyObject *args, PyObject *kwds);
void Color_SetBounds(Color *self);
int Color_init(Color *self, PyObject *args);
PyObject *Color_reduce(Color *self);
/* Presentation */
PyObject *Color_repr(Color *self);
PyObject *Color_str(Color *self);
PyObject *Color_richcompare(PyObject *a, PyObject *b, int op);
/* Sequence Operations */
Py_ssize_t Color_len(Color *self);
PyObject *Color_item(Color *self, Py_ssize_t i);
int Color_ass_item(Color *self, Py_ssize_t i, PyObject *value);
/* Generic Number Operations (Scalar Only) */
Color *Color_oper(Color *a, double b, int oper);
void Color_ioper(Color *a, double b, int oper);
/* Arithmetic Operations */
PyObject *Color_add(PyObject *a, PyObject *b);
PyObject *Color_iadd(Color *a, PyObject *b);
PyObject *Color_sub(PyObject *a, PyObject *b);
PyObject *Color_isub(Color *a, PyObject *b);
PyObject *Color_mul(PyObject *a, PyObject *b);
PyObject *Color_imul(Color *a, PyObject *b);
PyObject *Color_div(PyObject *a, PyObject *b);
PyObject *Color_idiv(Color *a, PyObject *b);
PyObject *Color_flr(PyObject *a, PyObject *b);
PyObject *Color_iflr(Color *a, PyObject *b);
PyObject *Color_mod(PyObject *a, PyObject *b);
PyObject *Color_imod(Color *a, PyObject *b);
PyObject *Color_pow(PyObject *a, PyObject *b);
PyObject *Color_ipow(Color *a, PyObject *b);
/* General Functions */
PyObject *Color_blend(Color *self, PyObject *args);
/* Properties */
PyObject *Color_getr(Color *self, void *closure);
int Color_setr(Color *self, PyObject *value, void *closure);
PyObject *Color_getg(Color *self, void *closure);
int Color_setg(Color *self, PyObject *value, void *closure);
PyObject *Color_getb(Color *self, void *closure);
int Color_setb(Color *self, PyObject *value, void *closure);
PyObject *Color_geta(Color *self, void *closure);
int Color_seta(Color *self, PyObject *value, void *closure);

PyMODINIT_FUNC initflcolor(void);
